<?php
	
	error_reporting(E_ALL);
	ini_set('display_errors', true);
	
	include_once "inc/defines.php";
	include_once "auth.php";
	include_once "treenode.php";
	
	session_start();
	if(session_id() != '') { //s'il y a deja une session en cours on la detruit pour en ouvrir une nouvelle
		session_destroy();
		session_start();
	}
	
	$auth = new Auth($_POST['login'], $_POST['password']);
	if(isset($_SESSION["authLevel"])) {
		echo "Chargement depuis la base de donn&eacute;es...";
		flush();
		switch($_SESSION["authLevel"]) {
			case ADMIN:
				//arbres de la partie examens
				$sql = "SELECT ".FORM_TABLE.".id_form, ".FORM_TABLE.".nom_form,".SEMESTRE_TABLE.".id_sem, ".SEMESTRE_TABLE.".nom_sem, ".UE_TABLE.".id_ue, ".UE_TABLE.".nom_ue, ".MODULE_TABLE.".id_module, ".MODULE_TABLE.".nom_module, ".EXAM_TABLE.".id_examen, ".EXAM_TABLE.".nom_examen FROM ".FORM_TABLE." LEFT JOIN ".SEMESTRE_TABLE." ON ".FORM_TABLE.".id_form=".SEMESTRE_TABLE.".id_form LEFT JOIN ".UE_TABLE." ON ".SEMESTRE_TABLE.".id_sem=".UE_TABLE.".id_sem LEFT JOIN ".MODULE_TABLE." ON ".MODULE_TABLE.".id_ue=".UE_TABLE.".id_ue LEFT JOIN ".EXAM_TABLE." ON ".EXAM_TABLE.".id_module=".MODULE_TABLE.".id_module;";
				$examTree1 = new treenode("Examens de semestre", NULL, NULL);
				$examTree1->fetchResultSet($sql);
				$examTree1->createTreeFromResultSet();
				$sql = "SELECT ".FORM_TABLE.".id_form, ".FORM_TABLE.".nom_form, ".SEMESTRE_TABLE.".id_sem, ".SEMESTRE_TABLE.".nom_sem, ".PARCOURS_TABLE.".id_parcours, ".PARCOURS_TABLE.".nom_parcours, ".MODULE_TABLE.".id_module, ".MODULE_TABLE.".nom_module, ".EXAM_TABLE.".id_examen, ".EXAM_TABLE.".nom_examen FROM ".FORM_TABLE." LEFT JOIN ".SEMESTRE_TABLE." ON ".FORM_TABLE.".id_form=".SEMESTRE_TABLE.".id_form LEFT JOIN ".PARCOURS_TABLE." ON ".SEMESTRE_TABLE.".id_sem=".PARCOURS_TABLE.".id_sem LEFT JOIN ".MODULE_TABLE." ON ".PARCOURS_TABLE.".id_parcours=".MODULE_TABLE.".id_parcours LEFT JOIN ".EXAM_TABLE." ON ".EXAM_TABLE.".id_module=".MODULE_TABLE.".id_module;";
				$examTree2 = new treenode("Examens de parcours", NULL, NULL);
				$examTree2->fetchResultSet($sql);
				$examTree2->createTreeFromResultSet();
				$_SESSION["examTree1"] = serialize($examTree1);
				$_SESSION["examTree2"] = serialize($examTree2);
				
				//arbre de la partie etudiants
				$sql = "SELECT ".FORM_TABLE.".id_form, ".FORM_TABLE.".nom_form,".SEMESTRE_TABLE.".id_sem, ".SEMESTRE_TABLE.".nom_sem, ".GRP_TD_TABLE.".id_grptd, ".GRP_TD_TABLE.".nom_grptd, ".GRP_TP_TABLE.".id_grptp, ".GRP_TP_TABLE.".nom_grptp, ".ETUDIANT_TABLE.".login, ".ETUDIANT_TABLE.".login FROM ".FORM_TABLE." LEFT JOIN ".SEMESTRE_TABLE." ON ".FORM_TABLE.".id_form=".SEMESTRE_TABLE.".id_form LEFT JOIN ".GRP_TD_TABLE." ON ".SEMESTRE_TABLE.".id_sem=".GRP_TD_TABLE.".id_sem LEFT JOIN ".GRP_TP_TABLE." ON ".GRP_TD_TABLE.".id_grptd=".GRP_TP_TABLE.".id_grptd LEFT JOIN ".ETUDIANT_TABLE." ON ".ETUDIANT_TABLE.".id_grptp=".GRP_TP_TABLE.".id_grptp;";
				$etuTree1 = new treenode("Etudiants", NULL, NULL);
				$etuTree1->fetchResultSet($sql);
				$etuTree1->createTreeFromResultSet();
				$_SESSION["etuTree1"] = serialize($etuTree1);
				header("Location: ../pages/admin/exam.php");
				break;
			case DDE:
				//arbre de la partie DDE
				$sql = "SELECT id_dde FROM ".DDE_TABLE." WHERE login=\"".$_POST['login']."\";";
				$db = new PDO(SERVER.":host=".HOST.";dbname=".BASE, USER, PASS);
				$st = $db->prepare($sql);
				$st->execute();
				$ligne = $st->fetch(PDO::FETCH_ASSOC); //il n'y a qu'une ligne de retournee puisque login est unique
				$id = $ligne["id_dde"];
				$sql = "select Formation.id_form, Formation.nom_form, Semestre.id_sem, Semestre.nom_sem, UE.id_ue, UE.nom_ue, Module.id_module, Module.nom_module, Examen.id_examen, Examen.nom_examen from Suit left join Formation on Suit.id_form=Formation.id_form left join Semestre on Formation.id_form=Semestre.id_form left join UE on UE.id_sem=Semestre.id_sem left join Module on Module.id_ue=UE.id_ue left join Examen on Examen.id_module=Module.id_module WHERE id_dde=".$id.";";
				$ddeTree = new treenode("Statistiques", NULL, NULL);
				$ddeTree->fetchResultSet($sql);
				$ddeTree->createTreeFromResultSet();
				$_SESSION["ddeTree"] = serialize($ddeTree);
				header("Location: ../pages/dde/stats.php");
				break;
			case ETUDIANT:
				//arbre des examens de l'etudiant
				$sql = "SELECT id_etud FROM ".ETUDIANT_TABLE." WHERE login=\"".$_POST['login']."\";"; //on recupere d'abord l'ID de l'etudiant
				$db = new PDO(SERVER.":host=".HOST.";dbname=".BASE, USER, PASS);
				$st = $db->prepare($sql);
				$st->execute();
				$ligne = $st->fetch(PDO::FETCH_ASSOC); //il n'y a qu'une ligne de retournee puisque login est unique
				$id = $ligne["id_etud"];
				
				//recuperation de l'arbre (UE d'abord) (TODO: reecrire cette requete avec les constantes de table)
				$sql = "select UE.id_ue, UE.nom_ue, Module.id_module, Module.nom_module, Examen.id_examen, Examen.nom_examen from Examen left join Module on Examen.id_module=Module.id_module left join UE on Module.id_ue=UE.id_ue where UE.id_sem IN (select distinct Semestre.id_sem from Etudiant left join Groupe_TP on Etudiant.id_grptp=Groupe_TP.id_grptp left join Groupe_TD on Groupe_TP.id_grptd=Groupe_TD.id_grptd left join Semestre on Groupe_TD.id_sem=Semestre.id_sem where Etudiant.id_etud=".$id.");";
				$etuTree = new treenode($_POST['login'], NULL, NULL);
				$etuTree->fetchResultSet($sql);
				$etuTree->createTreeFromResultSet();
				
				//ajout des modules de parcours a l'arbre (TODO: reecrire cette requete avec les constantes de table)
				$sql = "select Parcours.id_parcours, Parcours.nom_parcours, Module.id_module, Module.nom_module, Examen.id_examen, Examen.nom_examen from Examen left join Module on Examen.id_module=Module.id_module left join Parcours on Module.id_parcours=Parcours.id_parcours where Parcours.id_parcours IN (select id_parcours from Etudiant where Etudiant.id_etud=".$id.");";
				$parcours = new treenode("subtree", NULL, NULL);
				$parcours->fetchResultSet($sql);
				$parcours->createTreeFromResultSet();
				
				if(!$parcours->hasNoChilds()) { //si l'etudiant est inscrit a un parcours, on ajoute ce parcours et ses modules a l'arbre
					$sub = reset($parcours->getChildNodes()); //reset() prend le premier element de l'array (fix pour le serveur de l'IUT)
					$sub->setSpecialType("p");
					$etuTree->addChildNode($sub); //on ne peut etre inscrit qu'a un parcours a la foix, il n'y a donc ici qu'une seule node dans l'arbre a l'indice 0
				}
				
				$_SESSION["etuTree"] = serialize($etuTree);
				$_SESSION["idEtud"] = $id;
				header("Location: ../pages/etu/etu.php");
				break;
		}
	}
	else {
		$_SESSION["loginMessage"] = "Identifiant ou mot de passe incorrect.";
		header("Location: ../pages/login.php");
	}
	
?>
